function getSequence(arr) {
  let maxLength = 0; // 记录最长递增子序列的长度
  let longetSeq = []; // 记录最长递增子序列

  /**
   *
   * @param {*} index 列表的下标
   * @param {*} subSeq 当前递增子序列
   */
  function findSubsequence(index, subSeq) {
    let currentNum = arr[index]; // 当前元素
    // 先把之前的递增子序列展开，再加上当前元素
    let newSeq = [...subSeq, currentNum]; // 新的递增子序列

    // 遍历下标之后的内容
    for (let i = index + 1; i < arr.length; i++) {
      // 遍历当前下标之后的元素时，发现有比当前元素大的元素
      if (arr[i] > currentNum) {
        findSubsequence(i, newSeq);
      }
    }

    // 每一次递归结束后，就会得到一个新的递增子序列
    // 相当于找到了所有的递增子序列
    // console.log("newSeq:", newSeq);

    if (newSeq.length > maxLength) {
      maxLength = newSeq.length;
      longetSeq = newSeq;
    }
  }

  for (let i = 0; i < arr.length; i++) {
    findSubsequence(i, []);
  }

  return longetSeq;
}

const list = [2, 1, 5, 3, 6, 4, 8, 9, 7];
const result = getSequence(list);
console.log(result);
